注意:所有文章除特别说明外,转载请注明出处.
第11章 SpringMVC组件分析
11.1 HandlerMapping
它的作用是根据request找到相应的处理器Handler和Interceptors。在HandlerMapping接口中只有一个方法:HandlerExceptionChain getHandler(HttpServletRequest request);
11.2 HandlerAdapter
HandlerAdapter理解为干活的人。在它里面有三个方法:1.supports(Object handler),判断是否可以使用某个Handler。2.handle()方法是用来具体使用Handler干活。3.getLastModified()方法是获取最后一个修改的时间。
11.3 HandlerExceptionResolver
在SpringMVC中专门处理异常情况的。此组件的作用是根据异常设置ModelAndView,然后交给render()方法进行渲染。render负责将ModelAndView渲染成页面。该组件HandlerExceptionResolver结构中只有一个方法,只需要从异常中解析出ModelAndView。
11.4 ViewResolver
该组件是将String类型视图名和Locale解析成View类型的视图。ViewResolver接口只有一个方法:View resolveViewName(String viewName, Locale locale);
最常使用的UrlBasedViewResolver系列解析器都是针对单一视图类型进行解析,比如:InternalResourceViewResolver只针对jsp类型视图。FreeMarkerViewResolver只针对FreeMarker视图。
11.5 RequestToViewNameTranslator
11.6 LocaleResolver
在解析视图的时候需要两个参数:视图名和Locale。视图名是处理器返回的。Locale是LocaleResolver从request中解析出来的locale。locale表示一个区域,有了这个就可以对不同区域的用户显示不同的结果。该接口中主要有两个方法:Locale resolveLocale(HttpServletRequest request); setLocale(HttpServletRequest request, HttpServletResponse response, Locale locale);
11.7 ThemeResolver
该组件是用来解析主题。
11.8 MultipartResolver
该组件用于处理上传请求,处理方法是将普通的request包装成MultipartHttpServletRequest。该组件中有三个方法:1.isMultipart(HttpServletRequest request):判断是否是上传请求。2.MultipartHttpServletRequest resolveMultipart(HttpServletRequest request):将request包装成MultipartHttpServletRequest。3.cleanupMultipart(MultipartHttpServletRequest request):清理上传过程中产生的临时资源。